<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Vue.set 全局操作</title>
  </head>
  <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
  <body>
    <h1>Hello Vue.set 全局操作</h1>
    <hr />
    <div id="app">
      <span>{{goods}}</span>
      <span>{{count}}</span>
    </div>

    <button onclick="add()">add</button>
  </body>

  <script>
    var outterData = {
      count: 1,
      goods: 'cars'
    }

    var app = new Vue({
      el: '#app',
      data: outterData
    })

    // 使用Vue.set
    function add () {
      // 应用场景：当只改变数据源中的数组时，Vue无法监听到数组某一下标值的变化以及数组长度的变化，因此无法进行更新，而set方法会进行更新
      // Vue.set(outterData.arr,1,'abc') 第二个参数为数组下标
      Vue.set(outterData, 'count', 2)
    }

    // 使用实例对象的属性
    function add () {
      app.count++
    }

    //
    function add () {
      outterData.count++
    }
  </script>
</html>
